const amqp = require('amqplib');
const util = require('./util');
const pool = [];

module.exports = {
    getConnection, releaseConnection
}
/**
 * 
 * @example
// 使用连接池创建监听器
getConnection()
  .then(conn => {
    conn.createChannel((err, ch) => {
      // 监听队列A
      ch.assertQueue('queueA', { durable: false });
      ch.consume('queueA', msg => {
        // 处理队列A的消息
      }, { noAck: true });

      // 监听队列B
      ch.assertQueue('queueB', { durable: false });
      ch.consume('queueB', msg => {
        // 处理队列B的消息
      }, { noAck: true });

      // 当不再需要连接时，将其返回给连接池
      releaseConnection(conn);
    });
  })
  .catch(err => {
    console.error('Error creating channel:', err);
  });
 */
function getConnection() {
  return new Promise((resolve, reject) => {
    if (pool.length > 0) {
      resolve(pool.pop());
    } else {
      amqp.connect(util.config.amqpUrl)
        .then(conn => {
          resolve(conn);
        })
        .catch(err => {
          reject(err);
        });
    }
  });
}

function releaseConnection(conn) {
  pool.push(conn);
}
